home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
pctj8301.arc
/
TIMEDEMO.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1986-09-14
|
3KB
|
104 lines
PROGRAM TIMEDEMO(INPUT,OUTPUT);
CONST
COLON = ':';
TYPE
TIME_TYPE = STRING(8);
VAR
REQ_TIME:TIME_TYPE;
PACKED_VALUE:WORD;
PROCEDURE PACK_TIME(TIME_STRING:TIME_TYPE;
VAR TIME_WORD:WORD);
VAR
START_POSITION:INTEGER;
COLON_POSITION:INTEGER;
TEMP_WORD:WORD;
TEMP_STRING:LSTRING(2);
SUCCESS:BOOLEAN;
BEGIN {PACK_TIME}
TIME_WORD := 0;
START_POSITION := 1;
COLON_POSITION := POSITN(COLON,TIME_STRING,START_POSITION);
MOVEL(ADR TIME_STRING[START_POSITION],ADR TEMP_STRING[1],WRD(COLON_POSITION - START_POSITION));
TEMP_STRING.LEN := LOBYTE(COLON_POSITION - START_POSITION);
SUCCESS := DECODE(TEMP_STRING,TEMP_WORD);
TIME_WORD := TIME_WORD + (TEMP_WORD * 2048);
START_POSITION := COLON_POSITION + 1;
TEMP_WORD := 0;
COLON_POSITION := POSITN(COLON,TIME_STRING,START_POSITION);
MOVEL(ADR TIME_STRING[START_POSITION],ADR TEMP_STRING[1],WRD(COLON_POSITION - START_POSITION));
TEMP_STRING.LEN := LOBYTE(COLON_POSITION - START_POSITION);
SUCCESS := DECODE(TEMP_STRING,TEMP_WORD);
TIME_WORD := TIME_WORD + (TEMP_WORD * 32);
START_POSITION := COLON_POSITION + 1;
TEMP_WORD := 0;
MOVEL(ADR TIME_STRING[START_POSITION],ADR TEMP_STRING[1],2);
TEMP_STRING.LEN := 2;
SUCCESS := DECODE(TEMP_STRING,TEMP_WORD);
TIME_WORD := TIME_WORD + (TEMP_WORD/WRD(2));
END; {PACK_TIME}
PROCEDURE UNPACK_TIME(VAR TIME_STRING:TIME_TYPE;
TIME_WORD:WORD);
VAR
TEMP_WORD:WORD;
TEMP_STRING:LSTRING(2);
SUCCESS:BOOLEAN;
BEGIN {UNPACK_TIME}
TIME_STRING := ' ';
TEMP_WORD := (TIME_WORD AND 16#F800) DIV 2048;
SUCCESS := ENCODE(TEMP_STRING,TEMP_WORD:2);
MOVEL(ADR TEMP_STRING[1],ADR TIME_STRING[1],2);
TIME_STRING[3] := COLON;
TEMP_WORD := (TIME_WORD AND 16#07E0) DIV 32;
SUCCESS := ENCODE(TEMP_STRING,TEMP_WORD:2);
IF TEMP_STRING[1] = ' ' THEN TEMP_STRING[1] := '0';
MOVEL(ADR TEMP_STRING[1],ADR TIME_STRING[4],2);
TIME_STRING[6] := COLON;
TEMP_WORD := (TIME_WORD AND 16#001F) * 2;
SUCCESS := ENCODE(TEMP_STRING,TEMP_WORD:2);
IF TEMP_STRING[1] = ' ' THEN TEMP_STRING[1] := '0';
MOVEL(ADR TEMP_STRING[1],ADR TIME_STRING[7],2);
END; {UNPACK_TIME}
BEGIN {TIMEDEMO}
REPEAT
PACKED_VALUE := 0;
WRITE(OUTPUT,'Enter the time [HH:MM:SS]: ');
READLN(INPUT,REQ_TIME);
IF REQ_TIME = 'END ' THEN CYCLE;
PACK_TIME(REQ_TIME,PACKED_VALUE);
WRITELN(OUTPUT,' ');
WRITELN(OUTPUT,' The packed value for ',REQ_TIME,' IS ',PACKED_VALUE);
WRITELN(OUTPUT,' ');
REQ_TIME := ' ';
UNPACK_TIME(REQ_TIME,PACKED_VALUE);
WRITELN(OUTPUT,' The unpacked string for ',PACKED_VALUE,' IS ',REQ_TIME);
WRITELN(OUTPUT,' ');
WRITELN(OUTPUT,'-------------------------');
UNTIL REQ_TIME = 'END ';
WRITELN(OUTPUT,' ');
WRITELN(OUTPUT,'End of TIMEDEMO program');
END. {TIMEDEMO}